/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.digitalpoint.dao;

import br.com.digitalpoint.Setor;
import br.com.digitalpoint.utils.FabricaConexao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author rodrigo
 */
public class SetorDAO
{
    public void incluir(Setor setor) throws Exception
    {
        try
        {
            String insere = "INSERT INTO TBSetores (nome,descricao,cod_supervisor) VALUES (?,?,?)";
            Connection con = FabricaConexao.abreConexao();
            PreparedStatement ps = con.prepareStatement(insere);


            ps.setString(1, setor.getNome());
            ps.setString(2, setor.getDescricao());
            ps.setInt(3,setor.getCod_supervisor());
            ps.execute();
        }
        catch(Exception e)
        {
            throw new Exception("Setor DAO: "+e.getMessage());
        }
        finally
        {
            FabricaConexao.fechaConexao();
        }
    }

    public Setor consultar(String nome) throws Exception
    {
        Setor setor = null;
        try
        {
            String consulta = "SELECT top 1 * FROM TBSetores WHERE nome LIKE ?";
              Connection con = FabricaConexao.abreConexao();
            PreparedStatement ps = con.prepareStatement(consulta);
            ps.setString(1, nome);
            ResultSet resultado = ps.executeQuery();
            if (resultado.next())
            {
               int codigoSetor = resultado.getInt(1);
               String nomeSetor = resultado.getString(2);
               String descricaoSetor = resultado.getString(3);
               int codigoSupervisor = resultado.getInt(4);
               setor = new Setor(codigoSetor,nomeSetor,descricaoSetor,codigoSupervisor);
            }
            else
            {
                throw new Exception("SetorDAO: Setor não encontrado!");
            }
        }
        catch(Exception e)
        {
            throw new Exception("SetirDAO:"+e.getMessage());
        }
        finally
        {
            FabricaConexao.fechaConexao();
            return setor;
        }
    }

    public void excluir(int cod_setor) throws Exception
    {
        try
        {
            String exclui = "DELETE FROM TBSetores WHERE cod_setor = ?";
            Connection con = FabricaConexao.abreConexao();
            PreparedStatement ps = con.prepareStatement(exclui);
            ps.setInt(1, cod_setor);
            ps.execute();
        }
        catch (SQLException e)
        {
            throw new Exception("FuncionarioDAO: "+e.getMessage());
        }
        finally
        {
            FabricaConexao.fechaConexao();
        }
    }

    public void alterar(Setor setor) throws Exception
    {
        try
        {
            String altera = "UPDATE TBSetores SET nome = ?, descricao = ?, cod_supervisor = ?  WHERE cod_setor = ?";
            Connection con = FabricaConexao.abreConexao();
            PreparedStatement ps = con.prepareStatement(altera);

            ps.setString(1,setor.getNome());
            ps.setString(2,setor.getDescricao());
            ps.setInt(3,setor.getCod_supervisor());
            ps.setInt(4,setor.getCod_setor());
            ps.execute();
        }
        catch (SQLException e)
        {
            throw new Exception("SetorDAO: "+e.getMessage());
        }
        finally
        {
            FabricaConexao.fechaConexao();
        }
    }

    public ArrayList<Setor> consultarTodosSetores()
    {
        ArrayList<Setor> setor = new ArrayList<Setor>();
        Setor set = null;
        try
        {
            String consultaSetores = "SELECT * FROM TBSetores order by nome asc";
            Connection con = FabricaConexao.abreConexao();
            PreparedStatement ps = con.prepareStatement(consultaSetores);
            ResultSet resultado = ps.executeQuery();
            while(resultado.next())
            {
                int codigo = resultado.getInt(1);
                String nome = resultado.getString(2);
                set = new Setor(codigo,nome);
                setor.add(set);
            }
        }
        catch (Exception e)
        {
            throw new Exception("SetorDAO: "+e.getMessage());
        }
        finally
        {
            FabricaConexao.fechaConexao();
            return setor;
        }
    }

    public String consultarFuncionarioSetor(int matr)
    {
        String resulta=null;
        try
        {
            String consultaSetores = "SELECT TBFuncionarios.matricula, TBFuncionarios.nome, TBSetores.cod_setor, TBSetores.nome AS setor FROM TBFuncionarios "+
                    "INNER JOIN TBLotacoes ON TBFuncionarios.matricula = TBLotacoes.matricula INNER JOIN TBSetores ON TBLotacoes.cod_setor = TBSetores.cod_setor "+
                    "WHERE     (TBFuncionarios.matricula = ?)";
            Connection con = FabricaConexao.abreConexao();
            PreparedStatement ps = con.prepareStatement(consultaSetores);
            ps.setInt(1,matr);
            ResultSet resultado = ps.executeQuery();            
            while(resultado.next())
            {
                int setorCodigo = resultado.getInt(3);
                String setorNome = resultado.getString(4);
                resulta=setorCodigo+"-"+setorNome;
            }            
        }
        catch (Exception e)
        {
              throw new Exception("sfdfsdfsdsd"+e.getMessage());
        }
        finally
        {
            FabricaConexao.fechaConexao();
            return resulta;
        }
        
    }
    

}
